package com.doit.day01

import redis.clients.jedis.{Jedis, JedisPool}

import java.sql.{Connection, DriverManager}
import scala.collection.immutable
import scala.util.Random

/*
   方法本质上就是一段代码逻辑得封装 我给他取个名字 然后不断得去调用 便于后面得复用
 */
object _08_方法 {
  def main(args: Array[String]): Unit = {
    /*  println(add(1, 2))

      val ran = new Random()
      val a: Int = ran.nextInt(10)

      val res: AnyVal = if(a>3){
        10
      }

      val ints: immutable.Seq[Unit] = for (elem <- 1 to 4) yield {
        println("shshjs")
      }

      println(ints)*/
    nine(3)


  }

  /*
      写方法得时候，返回值前面得return 可以省略不写，方法体大括号里面，默认最后一行代码就是返回值
      return 可以省略 方法得返回值类型也可以省略，如果你的return没有省略，那么，方法得返回值类型也不能省略

      定义方法得语法：
        def 方法名(参数列表):返回值类型 ={
        方法体
        最后一行就是方法得返回值
        }

        public 返回值类型   方法名(参数){
        方法提
        retrun 结果；
        }



        调用：
        class：所有得东西都不是静态得
        如果方法定义再class里面，创建对象，用对象.方法
        object：所有得东西都是静态得
        如果方法定义再object中，类名.方法(参数)

        定义一个方法，传进去一个int类型得值，注意，这个int类型得值只能够传1-9
        如果传了其他的值，就抛个异常
        如果式再1-9里面，就打印99乘法表


        2.创建一个方法，用来获取mysql数据库jdbc得链接对象
        3.创建一个方法，用来获取redis得链接对象
        4.创建一个方法，用来获取kafka得消费者链接对象



        练习一：创建一个方法，里面传入一个String类型得参数，方法没有返回值，打印一句话(参数 +你好)

        练习二：创建一个方法，不传参数，里面打印一个九九乘法表以后，再返回一个int类型得随机数


        练习三：创建一个方法，里面传3个int类型得参数，去三个参数得最大值返回


        练习四：方法中不传参数,再方法中new一个随机数，看这个随机数和100哪个大，如果100大，返回随机数*100，如果随机数大，返回100


   */

  //两个数相加得方法
  def add(a: Int, b: Int) = {
    a + b
  }

  def nine(a: Int) = {
    if (a >= 1 && a <= 9) {
      //打印乘法表
      for (i <- 1 to a) {
        for (j <- 1 to i) {
          print(s"$j * $i = ${i * j}\t")
        }
        println()
      }
    } else {
      throw new InterruptedException("参数不合法")
    }
  }


  def getMysqlConn(url: String, host: String, password: String) = {
    DriverManager.getConnection(url, host, password)
  }

  def getRedis(host: String, port: Int):Jedis = {
      new Jedis(host, port)
//    val pool: JedisPool = new JedisPool(host, port)
//    pool.getResource
  }

}
